//package cn.wuyu.baselibrary.mvvm;
//
//import android.arch.lifecycle.ViewModel;
//import android.content.Intent;
//import android.os.Bundle;
//import android.support.annotation.Nullable;
//import android.support.v7.app.AppCompatActivity;
//import android.widget.Toast;
//
//import com.test.MyLiveDataToViewModel.screen.WindowDensity;
//import com.test.MyLiveDataToViewModel.ui.utils.ProgressDialogUtils;
//import com.test.MyLiveDataToViewModel.ui.viewModel.BaseViewModel;
//
//import java.util.ArrayList;
//import java.util.List;
//
//public abstract class BaseActivity extends AppCompatActivity implements BaseContract {
//
//
//    @Override
//    protected void onCreate(@Nullable Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        WindowDensity.getInstance().setCustomDensity(this, 375);
//        initViewModelEvent();
//    }
//
//    protected abstract ViewModel initViewModel();
//
//    protected List<ViewModel> initViewModelList() {
//        return null;
//    }
//
//    private void initViewModelEvent() {
//        List<ViewModel> viewModels;
//        viewModels = initViewModelList();
//        if (viewModels == null) {
//            viewModels = new ArrayList<>();
//            ViewModel viewModel = initViewModel();
//            if (viewModel != null) {
//                viewModels.add(viewModel);
//            }
//        }
//        observeEvent(viewModels);
//    }
//
//    private void observeEvent(List<ViewModel> viewModelList) {
//        for (ViewModel viewModel : viewModelList) {
//            if (viewModel instanceof BaseViewModel) {
//                BaseViewModel baseViewModel = (BaseViewModel) viewModel;
//                baseViewModel.getActionLiveData().observe(this, baseActionEvent -> {
//                    if (baseActionEvent != null) {
//                        switch (baseActionEvent.getAction()) {
//                            case SHOW_LOADING_DIALOG: {
//                                startLoading(baseActionEvent.getMessage());
//                                break;
//                            }
//                            case DISMISS_LOADING_DIALOG: {
//                                dismissLoading();
//                                break;
//                            }
//                            case TOAST: {
//                                showToast(baseActionEvent.getMessage());
//                                break;
//                            }
//                            case FINISH: {
//                                close();
//                                break;
//                            }
//                        }
//                    }
//                });
//            }
//        }
//    }
//
//
//    @Override
//    public void startLoading(String message) {
//        ProgressDialogUtils.showProgressDialog(this, message == null ? "" : message);
//    }
//
//    @Override
//    public void dismissLoading() {
//        ProgressDialogUtils.hideProgressDialog();
//    }
//
//    @Override
//    public void showToast(String message) {
//        if (message == null) return;
//        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
//    }
//
//    @Override
//    public void close() {
//        finish();
//    }
//
//    @Override
//    protected void onDestroy() {
//        super.onDestroy();
//        dismissLoading();
//    }
//
//    public void start(Object... objects) {
//        Intent intent = null;
//        Bundle bundle = null;
//        Class activityClass = null;
//
//        for (Object obj : objects) {
//            if (obj instanceof Class) {
//                activityClass = (Class) obj;
//            } else if (obj instanceof Intent) {
//                intent = (Intent) obj;
//            } else if (obj instanceof Bundle) {
//                bundle = (Bundle) obj;
//            }
//        }
//        if (intent == null & activityClass == null) {
//            throw new NullPointerException("没有传入activity");
//        }
//        if (intent == null) {
//            if (bundle != null) {
//                intent = new Intent(this, activityClass).putExtras(bundle);
//            } else {
//                intent = new Intent(this, activityClass);
//            }
//        }
//        startActivity(intent);
//    }
//
//    public void startForResult(Object... objects) {
//        Intent intent = null;
//        Bundle bundle = null;
//        Integer integer = 0;
//        Class activityClass = null;
//
//        for (Object obj : objects) {
//            if (obj instanceof Class) {
//                activityClass = (Class) obj;
//            } else if (obj instanceof Intent) {
//                intent = (Intent) obj;
//            } else if (obj instanceof Bundle) {
//                bundle = (Bundle) obj;
//            } else if (obj instanceof Integer) {
//                integer = (Integer) obj;
//            }
//        }
//        if (intent == null & activityClass == null) {
//            throw new NullPointerException("没有传入activity");
//        }
//        if (intent == null) {
//            if (bundle != null) {
//                intent = new Intent(this, activityClass).putExtras(bundle);
//            } else {
//                intent = new Intent(this, activityClass);
//            }
//        }
//        startActivityForResult(intent, integer);
//    }
//}
